package com.stn.zjx.givingtreasure.net.impl;

import android.annotation.SuppressLint;
import android.widget.Toast;

import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheEntity;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.callback.StringCallback;
import com.stn.zjx.givingtreasure.net.UserApi;
import com.stn.zjx.givingtreasure.utils.ToolsUtils;
import com.vondear.rxtools.view.RxToast;


import org.json.JSONObject;

public class UserNetImpl{

    /**
     * @apiNote 注册手机号
     * @param userPhone 手机号
     * @param userPwd 密码
     * @param tag 标签
     * @param callback 请求回调
     */
    @SuppressLint("CheckResult")
    public static void user_reigster(String userPhone, String userPwd
            , String tag, StringCallback callback){
        String data="";
        JSONObject jsonObject=new JSONObject();
        try {
            jsonObject.put("userPhone",userPhone);
            jsonObject.put("userPwd",userPwd);
            data= ToolsUtils.getEncryptionParams(jsonObject.toString());
        } catch (Exception e) {
            e.printStackTrace();

        }
        OkGo.<String>post(UserApi.user_register)
                .tag(tag)
                .isSpliceUrl(true)
                .upJson("")
                .params("data",data)
                .execute(callback);
    }

    /**
     * @apiNote 手机号密码登录
     * @param userPhone 手机号
     * @param userPwd 密码
     * @param location 位置信息 json文本
     * @param tag 标签
     * @param callback 请求回调
     */
    public static void user_login(String userPhone, String userPwd,
                                  String location,
                                  String tag, StringCallback callback){
        String data;
        JSONObject jsonObject=new JSONObject();
        try {
            jsonObject.put("userPhone",userPhone);
            jsonObject.put("userPwd",userPwd);
            jsonObject.put("location",location);
            data= ToolsUtils.getEncryptionParams(jsonObject.toString());
        } catch (Exception e) {
            e.printStackTrace();


            return;
        }
        OkGo.<String>post(UserApi.user_login)
                .tag(tag)
                .isSpliceUrl(true)
                .upJson("")
                .params("data",data)
                .execute(callback);

    }
    /**
     * @apiNote 动态短信无密码登录
     * @param userPhone 手机号
     * @param location 位置信息 json文本
     * @param tag 标签
     * @param callback 请求回调

     */
    public  static  void user_login_nopassword(String userPhone,
                                               String location,
                                               String tag, StringCallback callback){
        String data="";
        JSONObject jsonObject=new JSONObject();
        try {
            jsonObject.put("userPhone",userPhone);
            jsonObject.put("location",location);
            data= ToolsUtils.getEncryptionParams(jsonObject.toString());
        } catch (Exception e) {
            e.printStackTrace();

            return;
        }

        OkGo.<String>post(UserApi.user_login_nopassword)
                .tag(tag)
                .isSpliceUrl(true)
                .upJson("")
                .params("data",data)
                .execute(callback);

    }

    /**
     * @apiNote 通过token，用户退出登录
     * @param token token
     * @param tag 标签
     * @param callback 请求回调
     */
    public static void user_exit_login(String token,
                                                   String tag, StringCallback callback){

        OkGo.<String>post(UserApi.user_exit_login)
                .tag(tag)
                .isSpliceUrl(true)
                .upJson("")
                .params("token",token,true)
                .execute(callback);

    }

    /**
     * @apiNote 通过手机号，获取用户资料信息
     * @param userPhone 手机号
     * @param tag 标签
     * @param callback 请求回调
     */
    public static void user_query_profile(String userPhone,
                                          String tag, StringCallback callback){
        JSONObject data=new JSONObject();
        try {
            data.put("userPhone",userPhone);
        } catch (Exception e) {
            e.printStackTrace();
        }

        OkGo.<String>post(UserApi.user_query_profile)
                .tag(tag)
                .isSpliceUrl(true)
                .upJson("")
                .params("data",data.toString())
                .execute(callback);

    }

    /**
     * @apiNote 通过手机号修改密码
     * @param userPhone 用户手机号
     * @param userPwd 用户密码
     * @param tag 标签
     * @param callback 请求回调
     */
    public static void user_modfiy_phonepassword(String userPhone,String userPwd,
                                                 String tag, StringCallback callback){

        String data = "";
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("userPhone", userPhone);
            jsonObject.put("userPwd", userPwd);
            data =ToolsUtils.getEncryptionParams(jsonObject.toString());
        } catch (Exception e) {
            e.printStackTrace();
            RxToast.error(e.getMessage(), Toast.LENGTH_SHORT);
            return;
        }
        OkGo.<String>post(UserApi.user_modfiy_phonepassword)
                .tag(tag)
                .isSpliceUrl(true)
                .upJson("")
                .params("data", data)
                .execute(callback);
    }


    /**
     * @apiNote 通过token，获取用户资料信息
     * @param token token
     * @param tag 标签
     * @param callback 请求回调
     */
    public static void user_getuserprofile_bytoken(String token,
                                          String tag, StringCallback callback){

        OkGo.<String>post(UserApi.user_getuserprofile_bytoken)
                .tag(tag)
                .cacheTime(CacheEntity.CACHE_NEVER_EXPIRE)
                .cacheKey(tag)
                .cacheMode(CacheMode.FIRST_CACHE_THEN_REQUEST)
                .isSpliceUrl(true)
                .upJson("")
                .params("token",token,true)
                .execute(callback);

    }


    /**
     * @apiNote 通过手机号，获取用户资料信息
     * @param data json数据
     * @param tag 标签
     * @param callback 请求回调
     */
    public static void updateuserprofile_bytoken(String data,
                                                 String token,
                                          String tag, StringCallback callback){

        OkGo.<String>post(UserApi.updateuserprofile_bytoken)
                .tag(tag)
                .isSpliceUrl(true)
                .upJson("")
                .params("data",data)
                .params("token",token,true)
                .execute(callback);

    }

    /**
     * @apiNote 通过用户ID以及手机号查询资料

     * @param tag 标签
     * @param callback 请求回调
     */
    public static void query_user_profile_by_userid_userphone(String likeName,
                                                 String token,
                                                 String tag, StringCallback callback){
        String data = "";
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("likeName", likeName);

            data =ToolsUtils.getEncryptionParams(jsonObject.toString());
        } catch (Exception e) {
            e.printStackTrace();
            RxToast.error(e.getMessage(), Toast.LENGTH_SHORT);
            return;
        }
        OkGo.<String>post(UserApi.query_user_profile_by_userid_userphone)
                .tag(tag)
                .isSpliceUrl(true)
                .upJson("")
                .params("data",data)
                .params("token",token,true)
                .execute(callback);

    }


}
